home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / ImageCodec.p < prev    next >
Encoding:
Text File  |  1998-02-12  |  42.2 KB  |  1,091 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        ImageCodec.p
  3.  
  4.      Contains:    QuickTime Interfaces.
  5.  
  6.      Version:    Technology:    QuickTime 3.0
  7.                  Release:    Universal Interfaces 3.1
  8.  
  9.      Copyright:    © 1990-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT ImageCodec;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __IMAGECODEC__}
  28. {$SETC __IMAGECODEC__ := 1}
  29.  
  30. {$I+}
  31. {$SETC ImageCodecIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __MACTYPES__}
  35. {$I MacTypes.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __QUICKDRAW__}
  38. {$I Quickdraw.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __IMAGECOMPRESSION__}
  41. {$I ImageCompression.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __COMPONENTS__}
  44. {$I Components.p}
  45. {$ENDC}
  46. {$IFC UNDEFINED __MOVIES__}
  47. {$I Movies.p}
  48. {$ENDC}
  49. {$IFC UNDEFINED __GXTYPES__}
  50. {$I GXTypes.p}
  51. {$ENDC}
  52.  
  53.  
  54. {$PUSH}
  55. {$ALIGN MAC68K}
  56. {$LibExport+}
  57.  
  58.  
  59. {    codec capabilities flags    }
  60.  
  61. CONST
  62.     codecCanScale                = $00000001;
  63.     codecCanMask                = $00000002;
  64.     codecCanMatte                = $00000004;
  65.     codecCanTransform            = $00000008;
  66.     codecCanTransferMode        = $00000010;
  67.     codecCanCopyPrev            = $00000020;
  68.     codecCanSpool                = $00000040;
  69.     codecCanClipVertical        = $00000080;
  70.     codecCanClipRectangular        = $00000100;
  71.     codecCanRemapColor            = $00000200;
  72.     codecCanFastDither            = $00000400;
  73.     codecCanSrcExtract            = $00000800;
  74.     codecCanCopyPrevComp        = $00001000;
  75.     codecCanAsync                = $00002000;
  76.     codecCanMakeMask            = $00004000;
  77.     codecCanShift                = $00008000;
  78.     codecCanAsyncWhen            = $00010000;
  79.     codecCanShieldCursor        = $00020000;
  80.     codecCanManagePrevBuffer    = $00040000;
  81.     codecHasVolatileBuffer        = $00080000;
  82.     codecWantsRegionMask        = $00100000;
  83.     codecImageBufferIsOnScreen    = $00200000;
  84.     codecWantsDestinationPixels    = $00400000;
  85.     codecWantsSpecialScaling    = $00800000;
  86.     codecHandlesInputs            = $01000000;
  87.     codecCanDoIndirectSurface    = $02000000;
  88.     codecIsSequenceSensitive    = $04000000;
  89.     codecRequiresOffscreen        = $08000000;
  90.     codecRequiresMaskBits        = $10000000;
  91.     codecCanRemapResolution        = $20000000;
  92.     codecIsDirectToScreenOnly    = $40000000;
  93.     codecCanLockSurface            = $80000000;
  94.  
  95.  
  96. TYPE
  97.     CodecCapabilitiesPtr = ^CodecCapabilities;
  98.     CodecCapabilities = RECORD
  99.         flags:                    LONGINT;
  100.         wantedPixelSize:        INTEGER;
  101.         extendWidth:            INTEGER;
  102.         extendHeight:            INTEGER;
  103.         bandMin:                INTEGER;
  104.         bandInc:                INTEGER;
  105.         pad:                    INTEGER;
  106.         time:                    UInt32;
  107.     END;
  108.  
  109. {    codec condition flags    }
  110.  
  111. CONST
  112.     codecConditionFirstBand        = $00000001;
  113.     codecConditionLastBand        = $00000002;
  114.     codecConditionFirstFrame    = $00000004;
  115.     codecConditionNewDepth        = $00000008;
  116.     codecConditionNewTransform    = $00000010;
  117.     codecConditionNewSrcRect    = $00000020;
  118.     codecConditionNewMask        = $00000040;
  119.     codecConditionNewMatte        = $00000080;
  120.     codecConditionNewTransferMode = $00000100;
  121.     codecConditionNewClut        = $00000200;
  122.     codecConditionNewAccuracy    = $00000400;
  123.     codecConditionNewDestination = $00000800;
  124.     codecConditionFirstScreen    = $00001000;
  125.     codecConditionDoCursor        = $00002000;
  126.     codecConditionCatchUpDiff    = $00004000;
  127.     codecConditionMaskMayBeChanged = $00008000;
  128.     codecConditionToBuffer        = $00010000;
  129.     codecConditionCodecChangedMask = $80000000;
  130.  
  131.  
  132.     codecInfoResourceType        = 'cdci';                        {  codec info resource type  }
  133.     codecInterfaceVersion        = 2;                            {  high word returned in component GetVersion  }
  134.  
  135.  
  136. TYPE
  137.     CDSequenceDataSourceQueueEntryPtr = ^CDSequenceDataSourceQueueEntry;
  138.     CDSequenceDataSourceQueueEntry = RECORD
  139.         nextBusy:                Ptr;
  140.         descSeed:                LONGINT;
  141.         dataDesc:                Handle;
  142.         data:                    Ptr;
  143.         dataSize:                LONGINT;
  144.         useCount:                LONGINT;
  145.         frameTime:                TimeValue;
  146.         frameDuration:            TimeValue;
  147.         timeScale:                TimeValue;
  148.     END;
  149.  
  150.     CDSequenceDataSourcePtr = ^CDSequenceDataSource;
  151.     CDSequenceDataSource = RECORD
  152.         recordSize:                LONGINT;
  153.         next:                    Ptr;
  154.         seqID:                    ImageSequence;
  155.         sourceID:                ImageSequenceDataSource;
  156.         sourceType:                OSType;
  157.         sourceInputNumber:        LONGINT;
  158.         dataPtr:                Ptr;
  159.         dataDescription:        Handle;
  160.         changeSeed:                LONGINT;
  161.         transferProc:            ICMConvertDataFormatUPP;
  162.         transferRefcon:            Ptr;
  163.         dataSize:                LONGINT;
  164.                                                                         {  fields available in QT 3 and later  }
  165.         dataQueue:                QHdrPtr;                                {  queue of CDSequenceDataSourceQueueEntry structures }
  166.         originalDataPtr:        Ptr;
  167.         originalDataSize:        LONGINT;
  168.         originalDataDescription: Handle;
  169.         originalDataDescriptionSeed: LONGINT;
  170.     END;
  171.  
  172.     ICMFrameTimeInfoPtr = ^ICMFrameTimeInfo;
  173.     ICMFrameTimeInfo = RECORD
  174.         startTime:                wide;
  175.         scale:                    LONGINT;
  176.         duration:                LONGINT;
  177.     END;
  178.  
  179.     CodecCompressParamsPtr = ^CodecCompressParams;
  180.     CodecCompressParams = RECORD
  181.         sequenceID:                ImageSequence;                            {  precompress,bandcompress  }
  182.         imageDescription:        ImageDescriptionHandle;                    {  precompress,bandcompress  }
  183.         data:                    Ptr;
  184.         bufferSize:                LONGINT;
  185.         frameNumber:            LONGINT;
  186.         startLine:                LONGINT;
  187.         stopLine:                LONGINT;
  188.         conditionFlags:            LONGINT;
  189.         callerFlags:            CodecFlags;
  190.         capabilities:            CodecCapabilitiesPtr;                    {  precompress,bandcompress  }
  191.         progressProcRecord:        ICMProgressProcRecord;
  192.         completionProcRecord:    ICMCompletionProcRecord;
  193.         flushProcRecord:        ICMFlushProcRecord;
  194.         srcPixMap:                PixMap;                                    {  precompress,bandcompress  }
  195.         prevPixMap:                PixMap;
  196.         spatialQuality:            CodecQ;
  197.         temporalQuality:        CodecQ;
  198.         similarity:                Fixed;
  199.         dataRateParams:            DataRateParamsPtr;
  200.         reserved:                LONGINT;
  201.                                                                         {  The following fields only exist for QuickTime 2.1 and greater  }
  202.         majorSourceChangeSeed:    UInt16;
  203.         minorSourceChangeSeed:    UInt16;
  204.         sourceData:                CDSequenceDataSourcePtr;
  205.                                                                         {  The following fields only exit for QuickTime 2.5 and greater  }
  206.         preferredPacketSizeInBytes: LONGINT;
  207.                                                                         {  The following fields only exit for QuickTime 3.0 and greater  }
  208.         requestedBufferWidth:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  209.         requestedBufferHeight:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  210.     END;
  211.  
  212.     CodecDecompressParamsPtr = ^CodecDecompressParams;
  213.     CodecDecompressParams = RECORD
  214.         sequenceID:                ImageSequence;                            {  predecompress,banddecompress  }
  215.         imageDescription:        ImageDescriptionHandle;                    {  predecompress,banddecompress  }
  216.         data:                    Ptr;
  217.         bufferSize:                LONGINT;
  218.         frameNumber:            LONGINT;
  219.         startLine:                LONGINT;
  220.         stopLine:                LONGINT;
  221.         conditionFlags:            LONGINT;
  222.         callerFlags:            CodecFlags;
  223.         capabilities:            CodecCapabilitiesPtr;                    {  predecompress,banddecompress  }
  224.         progressProcRecord:        ICMProgressProcRecord;
  225.         completionProcRecord:    ICMCompletionProcRecord;
  226.         dataProcRecord:            ICMDataProcRecord;
  227.         port:                    CGrafPtr;                                {  predecompress,banddecompress  }
  228.         dstPixMap:                PixMap;                                    {  predecompress,banddecompress  }
  229.         maskBits:                BitMapPtr;
  230.         mattePixMap:            PixMapPtr;
  231.         srcRect:                Rect;                                    {  predecompress,banddecompress  }
  232.         matrix:                    MatrixRecordPtr;                        {  predecompress,banddecompress  }
  233.         accuracy:                CodecQ;                                    {  predecompress,banddecompress  }
  234.         transferMode:            INTEGER;                                {  predecompress,banddecompress  }
  235.         frameTime:                ICMFrameTimePtr;                        {  banddecompress  }
  236.         reserved:                ARRAY [0..0] OF LONGINT;
  237.                                                                         {  The following fields only exist for QuickTime 2.0 and greater  }
  238.         matrixFlags:            SInt8;                                    {  high bit set if 2x resize  }
  239.         matrixType:                SInt8;
  240.         dstRect:                Rect;                                    {  only valid for simple transforms  }
  241.                                                                         {  The following fields only exist for QuickTime 2.1 and greater  }
  242.         majorSourceChangeSeed:    UInt16;
  243.         minorSourceChangeSeed:    UInt16;
  244.         sourceData:                CDSequenceDataSourcePtr;
  245.         maskRegion:                RgnHandle;
  246.                                                                         {  The following fields only exist for QuickTime 2.5 and greater  }
  247.         wantedDestinationPixelTypes: ^OSTypePtr;                        {  Handle to 0-terminated list of OSTypes  }
  248.         screenFloodMethod:        LONGINT;
  249.         screenFloodValue:        LONGINT;
  250.         preferredOffscreenPixelSize: INTEGER;
  251.                                                                         {  The following fields only exist for QuickTime 3.0 and greater  }
  252.         syncFrameTime:            ICMFrameTimeInfoPtr;                    {  banddecompress  }
  253.         needUpdateOnTimeChange:    BOOLEAN;                                {  banddecompress  }
  254.         enableBlackLining:        BOOLEAN;
  255.         needUpdateOnSourceChange: BOOLEAN;                                {  band decompress  }
  256.         pad:                    BOOLEAN;
  257.         unused:                    LONGINT;
  258.         finalDestinationPort:    CGrafPtr;
  259.         requestedBufferWidth:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  260.         requestedBufferHeight:    LONGINT;                                {  must set codecWantsSpecialScaling to indicate this field is valid }
  261.     END;
  262.  
  263.  
  264. CONST
  265.     matrixFlagScale2x            = $00000080;
  266.     matrixFlagScale1x            = $00000040;
  267.     matrixFlagScaleHalf            = $00000020;
  268.  
  269.     kScreenFloodMethodNone        = 0;
  270.     kScreenFloodMethodKeyColor    = 1;
  271.     kScreenFloodMethodAlpha        = 2;
  272.  
  273.     kFlushLastQueuedFrame        = 0;
  274.     kFlushFirstQueuedFrame        = 1;
  275.  
  276.     kNewImageGWorldErase        = $00000001;
  277.  
  278.  
  279. TYPE
  280.     ImageSubCodecDecompressCapabilitiesPtr = ^ImageSubCodecDecompressCapabilities;
  281.     ImageSubCodecDecompressCapabilities = RECORD
  282.         recordSize:                LONGINT;                                {  sizeof(ImageSubCodecDecompressCapabilities) }
  283.         decompressRecordSize:    LONGINT;                                {  size of your codec's decompress record }
  284.         canAsync:                BOOLEAN;                                {  default true }
  285.         pad:                    PACKED ARRAY [0..2] OF UInt8;
  286.     END;
  287.  
  288.  
  289. CONST
  290.     kCodecFrameTypeUnknown        = 0;
  291.     kCodecFrameTypeKey            = 1;
  292.     kCodecFrameTypeDifference    = 2;
  293.     kCodecFrameTypeDroppableDifference = 3;
  294.  
  295.  
  296. TYPE
  297.     ImageSubCodecDecompressRecordPtr = ^ImageSubCodecDecompressRecord;
  298.     ImageSubCodecDecompressRecord = RECORD
  299.         baseAddr:                Ptr;
  300.         rowBytes:                LONGINT;
  301.         codecData:                Ptr;
  302.         progressProcRecord:        ICMProgressProcRecord;
  303.         dataProcRecord:            ICMDataProcRecord;
  304.         userDecompressRecord:    Ptr;                                    {  pointer to codec-specific per-band data }
  305.         frameType:                SInt8;
  306.         pad:                    PACKED ARRAY [0..2] OF UInt8;
  307.     END;
  308.  
  309. {  name of parameters or effect -- placed in root container, optional  }
  310.  
  311. CONST
  312.     kParameterTitleName            = 'name';
  313.     kParameterTitleID            = 1;
  314.  
  315. {  name of parameters or effect -- placed in root container, required  }
  316.     kParameterWhatName            = 'what';
  317.     kParameterWhatID            = 1;
  318.  
  319. {  is effect repeatable -- placed in root container, optional, default is TRUE }
  320.     kParameterRepeatableName    = 'pete';
  321.     kParameterRepeatableID        = 1;
  322.  
  323.     kParameterRepeatableTrue    = 1;
  324.     kParameterRepeatableFalse    = 0;
  325.  
  326. {  substitution codec in case effect is missing -- placed in root container, recommended  }
  327.     kParameterAlternateCodecName = 'subs';
  328.     kParameterAlternateCodecID    = 1;
  329.  
  330. {  maximum number of sources -- placed in root container, required  }
  331.     kParameterSourceCountName    = 'srcs';
  332.     kParameterSourceCountID        = 1;
  333.  
  334.  
  335.     kParameterDependencyName    = 'deep';
  336.     kParameterDependencyID        = 1;
  337.  
  338.     kParameterListDependsUponColorProfiles = 'prof';
  339.     kParameterListDependsUponFonts = 'font';
  340.  
  341.  
  342. TYPE
  343.     ParameterDependancyRecordPtr = ^ParameterDependancyRecord;
  344.     ParameterDependancyRecord = RECORD
  345.         dependCount:            LONGINT;
  346.         depends:                ARRAY [0..0] OF OSType;
  347.     END;
  348.  
  349. {
  350.    enumeration list in container -- placed in root container, optional unless used by a
  351.    parameter in the list
  352. }
  353.  
  354. CONST
  355.     kParameterEnumList            = 'enum';
  356.  
  357.  
  358. TYPE
  359.     EnumValuePairPtr = ^EnumValuePair;
  360.     EnumValuePair = RECORD
  361.         value:                    LONGINT;
  362.         name:                    Str255;
  363.     END;
  364.  
  365.     EnumListRecordPtr = ^EnumListRecord;
  366.     EnumListRecord = RECORD
  367.         enumCount:                LONGINT;                                {  number of enumeration items to follow }
  368.         values:                    ARRAY [0..0] OF EnumValuePair;            {  values and names for them, packed  }
  369.     END;
  370.  
  371. {  atom type of parameter }
  372.  
  373. CONST
  374.     kParameterAtomTypeAndID        = 'type';
  375.  
  376.     kNoAtom                        = 'none';                        {  atom type for no data got/set }
  377.     kAtomNoFlags                = $00000000;
  378.     kAtomNotInterpolated        = $00000001;                    {  atom can never be interpolated }
  379.     kAtomInterpolateIsOptional    = $00000002;                    {  atom can be interpolated, but it is an advanced user operation }
  380.  
  381.  
  382. TYPE
  383.     ParameterAtomTypeAndIDPtr = ^ParameterAtomTypeAndID;
  384.     ParameterAtomTypeAndID = RECORD
  385.         atomType:                QTAtomType;                                {  type of atom this data comes from/goes into }
  386.         atomID:                    QTAtomID;                                {  ID of atom this data comes from/goes into }
  387.         atomFlags:                LONGINT;                                {  options for this atom }
  388.         atomName:                Str255;                                    {  name of this value type }
  389.     END;
  390.  
  391. {  data type of a parameter }
  392.  
  393. CONST
  394.     kParameterDataType            = 'data';
  395.  
  396.     kParameterTypeDataLong        = 2;                            {  integer value }
  397.     kParameterTypeDataFixed        = 3;                            {  fixed point value }
  398.     kParameterTypeDataRGBValue    = 8;                            {  RGBColor data }
  399.     kParameterTypeDataDouble    = 11;                            {  IEEE 64 bit floating point value }
  400.     kParameterTypeDataText        = 'text';                        {  editable text item }
  401.     kParameterTypeDataEnum        = 'enum';                        {  enumerated lookup value }
  402.     kParameterTypeDataBitField    = 'bool';                        {  bit field value (something that holds boolean(s)) }
  403.     kParameterTypeDataImage        = 'imag';                        {  reference to an image via Picture data }
  404.  
  405.  
  406. TYPE
  407.     ParameterDataTypePtr = ^ParameterDataType;
  408.     ParameterDataType = RECORD
  409.         dataType:                OSType;                                    {  type of data this item is stored as }
  410.     END;
  411.  
  412. {
  413.    alternate (optional) data type -- main data type always required.  
  414.    Must be modified or deleted when modifying main data type.
  415.    Main data type must be modified when alternate is modified.
  416. }
  417.  
  418. CONST
  419.     kParameterAlternateDataType    = 'alt1';
  420.     kParameterTypeDataColorValue = 'cmlr';                        {  CMColor data (supported on machines with ColorSync) }
  421.     kParameterTypeDataCubic        = 'cubi';                        {  cubic bezier(s) (no built-in support) }
  422.     kParameterTypeDataNURB        = 'nurb';                        {  nurb(s) (no built-in support) }
  423.  
  424.  
  425. TYPE
  426.     ParameterAlternateDataEntryPtr = ^ParameterAlternateDataEntry;
  427.     ParameterAlternateDataEntry = RECORD
  428.         dataType:                OSType;                                    {  type of data this item is stored as }
  429.         alternateAtom:            QTAtomType;                                {  where to store }
  430.     END;
  431.  
  432.     ParameterAlternateDataTypePtr = ^ParameterAlternateDataType;
  433.     ParameterAlternateDataType = RECORD
  434.         numEntries:                LONGINT;
  435.         entries:                ARRAY [0..0] OF ParameterAlternateDataEntry;
  436.     END;
  437.  
  438. {  legal values for the parameter }
  439.  
  440. CONST
  441.     kParameterDataRange            = 'rang';
  442.  
  443.     kNoMinimumLongFixed            = $7FFFFFFF;                    {  ignore minimum/maxiumum values }
  444.     kNoMaximumLongFixed            = $80000000;
  445.     kNoScaleLongFixed            = 0;                            {  don't perform any scaling of value }
  446.     kNoPrecision                = -1;                            {  allow as many digits as format }
  447.  
  448. {  'text' }
  449.  
  450. TYPE
  451.     StringRangeRecordPtr = ^StringRangeRecord;
  452.     StringRangeRecord = RECORD
  453.         maxChars:                LONGINT;                                {  maximum length of string }
  454.         maxLines:                LONGINT;                                {  number of editing lines to use (1 typical, 0 to default) }
  455.     END;
  456.  
  457. {  'long' }
  458.     LongRangeRecordPtr = ^LongRangeRecord;
  459.     LongRangeRecord = RECORD
  460.         minValue:                LONGINT;                                {  no less than this }
  461.         maxValue:                LONGINT;                                {  no more than this }
  462.         scaleValue:                LONGINT;                                {  muliply content by this going in, divide going out }
  463.         precisionDigits:        LONGINT;                                {  # digits of precision when editing via typing }
  464.     END;
  465.  
  466. {  'enum' }
  467.     EnumRangeRecordPtr = ^EnumRangeRecord;
  468.     EnumRangeRecord = RECORD
  469.         enumID:                    LONGINT;                                {  'enum' list in root container to search within }
  470.     END;
  471.  
  472. {  'fixd' }
  473.     FixedRangeRecordPtr = ^FixedRangeRecord;
  474.     FixedRangeRecord = RECORD
  475.         minValue:                Fixed;                                    {  no less than this }
  476.         maxValue:                Fixed;                                    {  no more than this }
  477.         scaleValue:                Fixed;                                    {  muliply content by this going in, divide going out }
  478.         precisionDigits:        LONGINT;                                {  # digits of precision when editing via typing }
  479.     END;
  480.  
  481. {  'doub' }
  482. {  'bool'     }
  483.     BooleanRangeRecordPtr = ^BooleanRangeRecord;
  484.     BooleanRangeRecord = RECORD
  485.         maskValue:                LONGINT;                                {  value to mask on/off to set/clear the boolean }
  486.     END;
  487.  
  488. {  'rgb ' }
  489.     RGBRangeRecordPtr = ^RGBRangeRecord;
  490.     RGBRangeRecord = RECORD
  491.         minColor:                RGBColor;
  492.         maxColor:                RGBColor;
  493.     END;
  494.  
  495. {  'imag' }
  496.  
  497. CONST
  498.     kParameterImageNoFlags        = 0;
  499.  
  500.  
  501. TYPE
  502.     ImageRangeRecordPtr = ^ImageRangeRecord;
  503.     ImageRangeRecord = RECORD
  504.         imageFlags:                LONGINT;
  505.     END;
  506.  
  507. {  union of all of the above }
  508. {  UI behavior of a parameter }
  509.  
  510. CONST
  511.     kParameterDataBehavior        = 'ditl';
  512.  
  513.                                                                 {  items edited via typing }
  514.     kParameterItemEditText        = 'edit';                        {  edit text box }
  515.     kParameterItemEditLong        = 'long';                        {  long number editing box }
  516.     kParameterItemEditFixed        = 'fixd';                        {  fixed point number editing box }
  517.     kParameterItemEditDouble    = 'doub';                        {  double number editing box }
  518.                                                                 {  items edited via control(s) }
  519.     kParameterItemPopUp            = 'popu';                        {  pop up value for enum types }
  520.     kParameterItemRadioCluster    = 'radi';                        {  radio cluster for enum types }
  521.     kParameterItemCheckBox        = 'chex';                        {  check box for booleans }
  522.     kParameterItemControl        = 'cntl';                        {  item controlled via a standard control of some type }
  523.                                                                 {  special user items }
  524.     kParameterItemLine            = 'line';                        {  line }
  525.     kParameterItemColorPicker    = 'pick';                        {  color swatch & picker }
  526.     kParameterItemGroupDivider    = 'divi';                        {  start of a new group of items }
  527.     kParameterItemStaticText    = 'stat';                        {  display "parameter name" as static text }
  528.     kParameterItemDragImage        = 'imag';                        {  allow image display, along with drag and drop }
  529.                                                                 {  flags valid for lines and groups }
  530.     kGraphicsNoFlags            = $00000000;                    {  no options for graphics }
  531.     kGraphicsFlagsGray            = $00000001;                    {  draw lines with gray }
  532.                                                                 {  flags valid for groups }
  533.     kGroupNoFlags                = $00000000;                    {  no options for group -- may be combined with graphics options                         }
  534.     kGroupAlignText                = $00010000;                    {  edit text items in group have the same size }
  535.     kGroupSurroundBox            = $00020000;                    {  group should be surrounded with a box }
  536.     kGroupMatrix                = $00040000;                    {  side-by-side arrangement of group is okay }
  537.     kGroupNoName                = $00080000;                    {  name of group should not be displayed above box }
  538.                                                                 {  flags valid for popup/radiocluster/checkbox/control }
  539.     kDisableControl                = $00000001;
  540.     kDisableWhenNotEqual        = $00000001;
  541.     kDisableWhenEqual            = $00000011;
  542.     kDisableWhenLessThan        = $00000021;
  543.     kDisableWhenGreaterThan        = $00000031;                    {  flags valid for popups }
  544.     kPopupStoreAsString            = $00010000;
  545.  
  546.  
  547. TYPE
  548.     ControlBehaviorsPtr = ^ControlBehaviors;
  549.     ControlBehaviors = RECORD
  550.         groupID:                QTAtomID;                                {  group under control of this item }
  551.         controlValue:            LONGINT;                                {  control value for comparison purposes }
  552.     END;
  553.  
  554.     ParameterDataBehaviorPtr = ^ParameterDataBehavior;
  555.     ParameterDataBehavior = RECORD
  556.         behaviorType:            OSType;
  557.         behaviorFlags:            LONGINT;
  558.         CASE INTEGER OF
  559.         0: (
  560.             controls:            ControlBehaviors;
  561.             );
  562.     END;
  563.  
  564. {  higher level purpose of a parameter or set of parameters }
  565.  
  566. CONST
  567.     kParameterDataUsage            = 'use ';
  568.  
  569.     kParameterUsagePixels        = 'pixl';
  570.     kParameterUsageRectangle    = 'rect';
  571.     kParameterUsagePoint        = 'xy  ';
  572.     kParameterUsage3DPoint        = 'xyz ';
  573.     kParameterUsageDegrees        = 'degr';
  574.     kParameterUsageRadians        = 'rads';
  575.     kParameterUsagePercent        = 'pcnt';
  576.     kParameterUsageSeconds        = 'secs';
  577.     kParameterUsageMilliseconds    = 'msec';
  578.     kParameterUsageMicroseconds    = 'µsec';
  579.     kParameterUsage3by3Matrix    = '3by3';
  580.  
  581.  
  582. TYPE
  583.     ParameterDataUsagePtr = ^ParameterDataUsage;
  584.     ParameterDataUsage = RECORD
  585.         usageType:                OSType;                                    {  higher level purpose of the data or group }
  586.     END;
  587.  
  588. {  default value(s) for a parameter }
  589.  
  590. CONST
  591.     kParameterDataDefaultItem    = 'dflt';
  592.  
  593. { atoms that help to fill in data within the info window }
  594.     kParameterInfoLongName        = '©nam';
  595.     kParameterInfoCopyright        = '©cpy';
  596.     kParameterInfoDescription    = '©inf';
  597.     kParameterInfoWindowTitle    = '©wnt';
  598.     kParameterInfoPicture        = '©pix';
  599.     kParameterInfoIDs            = 1;
  600.  
  601. { flags for ImageCodecValidateParameters }
  602.     kParameterValidationNoFlags    = $00000000;
  603.     kParameterValidationFinalValidation = $00000001;
  604.  
  605.  
  606. TYPE
  607.     QTParameterValidationOptions        = LONGINT;
  608. {  QTAtomTypes for atoms in image compressor settings containers }
  609.  
  610. CONST
  611.     kImageCodecSettingsFieldCount = 'fiel';                        {  Number of fields (UInt8)  }
  612.     kImageCodecSettingsFieldOrdering = 'fdom';                    {  Ordering of fields (UInt8) }
  613.     kImageCodecSettingsFieldOrderingF1F2 = 1;
  614.     kImageCodecSettingsFieldOrderingF2F1 = 2;
  615.  
  616.  
  617. TYPE
  618. {$IFC TYPED_FUNCTION_POINTERS}
  619.     ImageCodecMPDrawBandProcPtr = FUNCTION(refcon: UNIV Ptr; VAR drp: ImageSubCodecDecompressRecord): ComponentResult;
  620. {$ELSEC}
  621.     ImageCodecMPDrawBandProcPtr = ProcPtr;
  622. {$ENDC}
  623.  
  624.     ImageCodecMPDrawBandUPP = UniversalProcPtr;
  625.  
  626. CONST
  627.     uppImageCodecMPDrawBandProcInfo = $000003F0;
  628.  
  629. FUNCTION NewImageCodecMPDrawBandProc(userRoutine: ImageCodecMPDrawBandProcPtr): ImageCodecMPDrawBandUPP;
  630.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  631.     INLINE $2E9F;
  632.     {$ENDC}
  633.  
  634. FUNCTION CallImageCodecMPDrawBandProc(refcon: UNIV Ptr; VAR drp: ImageSubCodecDecompressRecord; userRoutine: ImageCodecMPDrawBandUPP): ComponentResult;
  635.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  636.     INLINE $205F, $4E90;
  637.     {$ENDC}
  638. {    codec selectors 0-127 are reserved by Apple }
  639. {    codec selectors 128-191 are subtype specific }
  640. {    codec selectors 192-255 are vendor specific }
  641. {    codec selectors 256-32767 are available for general use }
  642. {    negative selectors are reserved by the Component Manager }
  643. FUNCTION ImageCodecGetCodecInfo(ci: ComponentInstance; VAR info: CodecInfo): ComponentResult;
  644.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  645.     INLINE $2F3C, $0004, $0000, $7000, $A82A;
  646.     {$ENDC}
  647. FUNCTION ImageCodecGetCompressionTime(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; depth: INTEGER; VAR spatialQuality: CodecQ; VAR temporalQuality: CodecQ; VAR time: UInt32): ComponentResult;
  648.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  649.     INLINE $2F3C, $0016, $0001, $7000, $A82A;
  650.     {$ENDC}
  651. FUNCTION ImageCodecGetMaxCompressionSize(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; depth: INTEGER; quality: CodecQ; VAR size: LONGINT): ComponentResult;
  652.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  653.     INLINE $2F3C, $0012, $0002, $7000, $A82A;
  654.     {$ENDC}
  655. FUNCTION ImageCodecPreCompress(ci: ComponentInstance; VAR params: CodecCompressParams): ComponentResult;
  656.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  657.     INLINE $2F3C, $0004, $0003, $7000, $A82A;
  658.     {$ENDC}
  659. FUNCTION ImageCodecBandCompress(ci: ComponentInstance; VAR params: CodecCompressParams): ComponentResult;
  660.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  661.     INLINE $2F3C, $0004, $0004, $7000, $A82A;
  662.     {$ENDC}
  663. FUNCTION ImageCodecPreDecompress(ci: ComponentInstance; VAR params: CodecDecompressParams): ComponentResult;
  664.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  665.     INLINE $2F3C, $0004, $0005, $7000, $A82A;
  666.     {$ENDC}
  667. FUNCTION ImageCodecBandDecompress(ci: ComponentInstance; VAR params: CodecDecompressParams): ComponentResult;
  668.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  669.     INLINE $2F3C, $0004, $0006, $7000, $A82A;
  670.     {$ENDC}
  671. FUNCTION ImageCodecBusy(ci: ComponentInstance; seq: ImageSequence): ComponentResult;
  672.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  673.     INLINE $2F3C, $0004, $0007, $7000, $A82A;
  674.     {$ENDC}
  675. FUNCTION ImageCodecGetCompressedImageSize(ci: ComponentInstance; desc: ImageDescriptionHandle; data: Ptr; bufferSize: LONGINT; dataProc: ICMDataProcRecordPtr; VAR dataSize: LONGINT): ComponentResult;
  676.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  677.     INLINE $2F3C, $0014, $0008, $7000, $A82A;
  678.     {$ENDC}
  679. FUNCTION ImageCodecGetSimilarity(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; desc: ImageDescriptionHandle; data: Ptr; VAR similarity: Fixed): ComponentResult;
  680.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  681.     INLINE $2F3C, $0014, $0009, $7000, $A82A;
  682.     {$ENDC}
  683. FUNCTION ImageCodecTrimImage(ci: ComponentInstance; Desc: ImageDescriptionHandle; inData: Ptr; inBufferSize: LONGINT; dataProc: ICMDataProcRecordPtr; outData: Ptr; outBufferSize: LONGINT; flushProc: ICMFlushProcRecordPtr; VAR trimRect: Rect; progressProc: ICMProgressProcRecordPtr): ComponentResult;
  684.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  685.     INLINE $2F3C, $0024, $000A, $7000, $A82A;
  686.     {$ENDC}
  687. FUNCTION ImageCodecRequestSettings(ci: ComponentInstance; settings: Handle; VAR rp: Rect; filterProc: ModalFilterUPP): ComponentResult;
  688.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  689.     INLINE $2F3C, $000C, $000B, $7000, $A82A;
  690.     {$ENDC}
  691. FUNCTION ImageCodecGetSettings(ci: ComponentInstance; settings: Handle): ComponentResult;
  692.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  693.     INLINE $2F3C, $0004, $000C, $7000, $A82A;
  694.     {$ENDC}
  695. FUNCTION ImageCodecSetSettings(ci: ComponentInstance; settings: Handle): ComponentResult;
  696.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  697.     INLINE $2F3C, $0004, $000D, $7000, $A82A;
  698.     {$ENDC}
  699. FUNCTION ImageCodecFlush(ci: ComponentInstance): ComponentResult;
  700.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  701.     INLINE $2F3C, $0000, $000E, $7000, $A82A;
  702.     {$ENDC}
  703. FUNCTION ImageCodecSetTimeCode(ci: ComponentInstance; timeCodeFormat: UNIV Ptr; timeCodeTime: UNIV Ptr): ComponentResult;
  704.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  705.     INLINE $2F3C, $0008, $000F, $7000, $A82A;
  706.     {$ENDC}
  707. FUNCTION ImageCodecIsImageDescriptionEquivalent(ci: ComponentInstance; newDesc: ImageDescriptionHandle; VAR equivalent: BOOLEAN): ComponentResult;
  708.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  709.     INLINE $2F3C, $0008, $0010, $7000, $A82A;
  710.     {$ENDC}
  711. FUNCTION ImageCodecNewMemory(ci: ComponentInstance; VAR data: Ptr; dataSize: Size; dataUse: LONGINT; memoryGoneProc: ICMMemoryDisposedUPP; refCon: UNIV Ptr): ComponentResult;
  712.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  713.     INLINE $2F3C, $0014, $0011, $7000, $A82A;
  714.     {$ENDC}
  715. FUNCTION ImageCodecDisposeMemory(ci: ComponentInstance; data: Ptr): ComponentResult;
  716.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  717.     INLINE $2F3C, $0004, $0012, $7000, $A82A;
  718.     {$ENDC}
  719. FUNCTION ImageCodecHitTestData(ci: ComponentInstance; desc: ImageDescriptionHandle; data: UNIV Ptr; dataSize: Size; where: Point; VAR hit: BOOLEAN): ComponentResult;
  720.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  721.     INLINE $2F3C, $0014, $0013, $7000, $A82A;
  722.     {$ENDC}
  723. FUNCTION ImageCodecNewImageBufferMemory(ci: ComponentInstance; VAR params: CodecDecompressParams; flags: LONGINT; memoryGoneProc: ICMMemoryDisposedUPP; refCon: UNIV Ptr): ComponentResult;
  724.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  725.     INLINE $2F3C, $0010, $0014, $7000, $A82A;
  726.     {$ENDC}
  727. FUNCTION ImageCodecExtractAndCombineFields(ci: ComponentInstance; fieldFlags: LONGINT; data1: UNIV Ptr; dataSize1: LONGINT; desc1: ImageDescriptionHandle; data2: UNIV Ptr; dataSize2: LONGINT; desc2: ImageDescriptionHandle; outputData: UNIV Ptr; VAR outDataSize: LONGINT; descOut: ImageDescriptionHandle): ComponentResult;
  728.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  729.     INLINE $2F3C, $0028, $0015, $7000, $A82A;
  730.     {$ENDC}
  731. FUNCTION ImageCodecGetMaxCompressionSizeWithSources(ci: ComponentInstance; src: PixMapHandle; {CONST}VAR srcRect: Rect; depth: INTEGER; quality: CodecQ; sourceData: CDSequenceDataSourcePtr; VAR size: LONGINT): ComponentResult;
  732.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  733.     INLINE $2F3C, $0016, $0016, $7000, $A82A;
  734.     {$ENDC}
  735. FUNCTION ImageCodecSetTimeBase(ci: ComponentInstance; base: UNIV Ptr): ComponentResult;
  736.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  737.     INLINE $2F3C, $0004, $0017, $7000, $A82A;
  738.     {$ENDC}
  739. FUNCTION ImageCodecSourceChanged(ci: ComponentInstance; majorSourceChangeSeed: UInt32; minorSourceChangeSeed: UInt32; sourceData: CDSequenceDataSourcePtr; VAR flagsOut: LONGINT): ComponentResult;
  740.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  741.     INLINE $2F3C, $0010, $0018, $7000, $A82A;
  742.     {$ENDC}
  743. FUNCTION ImageCodecFlushFrame(ci: ComponentInstance; flags: UInt32): ComponentResult;
  744.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  745.     INLINE $2F3C, $0004, $0019, $7000, $A82A;
  746.     {$ENDC}
  747. FUNCTION ImageCodecGetSettingsAsText(ci: ComponentInstance; VAR text: Handle): ComponentResult;
  748.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  749.     INLINE $2F3C, $0004, $001A, $7000, $A82A;
  750.     {$ENDC}
  751. FUNCTION ImageCodecGetParameterListHandle(ci: ComponentInstance; VAR parameterDescriptionHandle: Handle): ComponentResult;
  752.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  753.     INLINE $2F3C, $0004, $001B, $7000, $A82A;
  754.     {$ENDC}
  755. FUNCTION ImageCodecGetParameterList(ci: ComponentInstance; VAR parameterDescription: QTAtomContainer): ComponentResult;
  756.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  757.     INLINE $2F3C, $0004, $001C, $7000, $A82A;
  758.     {$ENDC}
  759. FUNCTION ImageCodecCreateStandardParameterDialog(ci: ComponentInstance; parameterDescription: QTAtomContainer; parameters: QTAtomContainer; dialogOptions: QTParameterDialogOptions; existingDialog: DialogPtr; existingUserItem: INTEGER; VAR createdDialog: QTParameterDialog): ComponentResult;
  760.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  761.     INLINE $2F3C, $0016, $001D, $7000, $A82A;
  762.     {$ENDC}
  763. FUNCTION ImageCodecIsStandardParameterDialogEvent(ci: ComponentInstance; VAR pEvent: EventRecord; createdDialog: QTParameterDialog): ComponentResult;
  764.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  765.     INLINE $2F3C, $0008, $001E, $7000, $A82A;
  766.     {$ENDC}
  767. FUNCTION ImageCodecDismissStandardParameterDialog(ci: ComponentInstance; createdDialog: QTParameterDialog): ComponentResult;
  768.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  769.     INLINE $2F3C, $0004, $001F, $7000, $A82A;
  770.     {$ENDC}
  771. FUNCTION ImageCodecStandardParameterDialogDoAction(ci: ComponentInstance; createdDialog: QTParameterDialog; action: LONGINT; params: UNIV Ptr): ComponentResult;
  772.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  773.     INLINE $2F3C, $000C, $0020, $7000, $A82A;
  774.     {$ENDC}
  775. FUNCTION ImageCodecNewImageGWorld(ci: ComponentInstance; VAR params: CodecDecompressParams; VAR newGW: GWorldPtr; flags: LONGINT): ComponentResult;
  776.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  777.     INLINE $2F3C, $000C, $0021, $7000, $A82A;
  778.     {$ENDC}
  779. FUNCTION ImageCodecDisposeImageGWorld(ci: ComponentInstance; theGW: GWorldPtr): ComponentResult;
  780.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  781.     INLINE $2F3C, $0004, $0022, $7000, $A82A;
  782.     {$ENDC}
  783. FUNCTION ImageCodecHitTestDataWithFlags(ci: ComponentInstance; desc: ImageDescriptionHandle; data: UNIV Ptr; dataSize: Size; where: Point; VAR hit: LONGINT; hitFlags: LONGINT): ComponentResult;
  784.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  785.     INLINE $2F3C, $0018, $0023, $7000, $A82A;
  786.     {$ENDC}
  787. FUNCTION ImageCodecValidateParameters(ci: ComponentInstance; parameters: QTAtomContainer; validationFlags: QTParameterValidationOptions; errorString: StringPtr): ComponentResult;
  788.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  789.     INLINE $2F3C, $000C, $0024, $7000, $A82A;
  790.     {$ENDC}
  791. FUNCTION ImageCodecGetBaseMPWorkFunction(ci: ComponentInstance; VAR workFunction: ComponentMPWorkFunctionUPP; VAR refCon: UNIV Ptr; drawProc: ImageCodecMPDrawBandUPP; drawProcRefCon: UNIV Ptr): ComponentResult;
  792.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  793.     INLINE $2F3C, $0010, $0025, $7000, $A82A;
  794.     {$ENDC}
  795. FUNCTION ImageCodecPreflight(ci: ComponentInstance; VAR params: CodecDecompressParams): ComponentResult;
  796.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  797.     INLINE $2F3C, $0004, $0200, $7000, $A82A;
  798.     {$ENDC}
  799. FUNCTION ImageCodecInitialize(ci: ComponentInstance; VAR cap: ImageSubCodecDecompressCapabilities): ComponentResult;
  800.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  801.     INLINE $2F3C, $0004, $0201, $7000, $A82A;
  802.     {$ENDC}
  803. FUNCTION ImageCodecBeginBand(ci: ComponentInstance; VAR params: CodecDecompressParams; VAR drp: ImageSubCodecDecompressRecord; flags: LONGINT): ComponentResult;
  804.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  805.     INLINE $2F3C, $000C, $0202, $7000, $A82A;
  806.     {$ENDC}
  807. FUNCTION ImageCodecDrawBand(ci: ComponentInstance; VAR drp: ImageSubCodecDecompressRecord): ComponentResult;
  808.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  809.     INLINE $2F3C, $0004, $0203, $7000, $A82A;
  810.     {$ENDC}
  811. FUNCTION ImageCodecEndBand(ci: ComponentInstance; VAR drp: ImageSubCodecDecompressRecord; result: OSErr; flags: LONGINT): ComponentResult;
  812.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  813.     INLINE $2F3C, $000A, $0204, $7000, $A82A;
  814.     {$ENDC}
  815. FUNCTION ImageCodecQueueStarting(ci: ComponentInstance): ComponentResult;
  816.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  817.     INLINE $2F3C, $0000, $0205, $7000, $A82A;
  818.     {$ENDC}
  819. FUNCTION ImageCodecQueueStopping(ci: ComponentInstance): ComponentResult;
  820.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  821.     INLINE $2F3C, $0000, $0206, $7000, $A82A;
  822.     {$ENDC}
  823. FUNCTION ImageCodecDroppingFrame(ci: ComponentInstance; {CONST}VAR drp: ImageSubCodecDecompressRecord): ComponentResult;
  824.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  825.     INLINE $2F3C, $0004, $0207, $7000, $A82A;
  826.     {$ENDC}
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839. CONST
  840.     kMotionJPEGTag                = 'mjpg';
  841.     kJPEGQuantizationTablesImageDescriptionExtension = 'mjqt';
  842.     kJPEGHuffmanTablesImageDescriptionExtension = 'mjht';
  843.     kFieldInfoImageDescriptionExtension = 'fiel';                {  image description extension describing the field count and field orderings }
  844.  
  845.     kFieldOrderUnknown            = 0;
  846.     kFieldsStoredF1F2DisplayedF1F2 = 1;
  847.     kFieldsStoredF1F2DisplayedF2F1 = 2;
  848.     kFieldsStoredF2F1DisplayedF1F2 = 5;
  849.     kFieldsStoredF2F1DisplayedF2F1 = 6;
  850.  
  851.  
  852. TYPE
  853.     MotionJPEGApp1MarkerPtr = ^MotionJPEGApp1Marker;
  854.     MotionJPEGApp1Marker = RECORD
  855.         unused:                    LONGINT;
  856.         tag:                    LONGINT;
  857.         fieldSize:                LONGINT;
  858.         paddedFieldSize:        LONGINT;
  859.         offsetToNextField:        LONGINT;
  860.         qTableOffset:            LONGINT;
  861.         huffmanTableOffset:        LONGINT;
  862.         sofOffset:                LONGINT;
  863.         sosOffset:                LONGINT;
  864.         soiOffset:                LONGINT;
  865.     END;
  866.  
  867.     FieldInfoImageDescriptionExtensionPtr = ^FieldInfoImageDescriptionExtension;
  868.     FieldInfoImageDescriptionExtension = PACKED RECORD
  869.         fieldCount:                UInt8;
  870.         fieldOrderings:            UInt8;
  871.     END;
  872.  
  873.  
  874. FUNCTION QTPhotoSetSampling(codec: ComponentInstance; yH: INTEGER; yV: INTEGER; cbH: INTEGER; cbV: INTEGER; crH: INTEGER; crV: INTEGER): ComponentResult;
  875.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  876.     INLINE $2F3C, $000C, $0100, $7000, $A82A;
  877.     {$ENDC}
  878. FUNCTION QTPhotoSetRestartInterval(codec: ComponentInstance; restartInterval: UInt16): ComponentResult;
  879.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  880.     INLINE $2F3C, $0002, $0101, $7000, $A82A;
  881.     {$ENDC}
  882. FUNCTION QTPhotoDefineHuffmanTable(codec: ComponentInstance; componentNumber: INTEGER; isDC: BOOLEAN; VAR lengthCounts: UInt8; VAR values: UInt8): ComponentResult;
  883.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  884.     INLINE $2F3C, $000C, $0102, $7000, $A82A;
  885.     {$ENDC}
  886. FUNCTION QTPhotoDefineQuantizationTable(codec: ComponentInstance; componentNumber: INTEGER; VAR table: UInt8): ComponentResult;
  887.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  888.     INLINE $2F3C, $0006, $0103, $7000, $A82A;
  889.     {$ENDC}
  890.  
  891.  
  892.  
  893.  
  894. { source identifier -- placed in root container of description, one or more required }
  895.  
  896. CONST
  897.     kEffectSourceName            = 'src ';
  898.  
  899.  
  900. { source type -- placed in the input map to identify the source kind }
  901.     kEffectDataSourceType        = 'dtst';
  902.  
  903. {  default effect types }
  904.     kEffectRawSource            = 0;                            {  the source is raw image data }
  905.     kEffectGenericType            = 'geff';                        {  generic effect for combining others }
  906.  
  907.  
  908. TYPE
  909.     EffectSourcePtr = ^EffectSource;
  910.     SourceDataPtr = ^SourceData;
  911.     SourceData = RECORD
  912.         CASE INTEGER OF
  913.         0: (
  914.             image:                CDSequenceDataSourcePtr;
  915.             );
  916.         1: (
  917.             effect:                EffectSourcePtr;
  918.             );
  919.     END;
  920.  
  921.  
  922.     EffectSource = RECORD
  923.         effectType:                LONGINT;                                {  type of effect or kEffectRawSource if raw ICM data }
  924.         data:                    Ptr;                                    {  track data for this effect }
  925.         source:                    SourceData;                                {  source/effect pointers }
  926.         next:                    EffectSourcePtr;                        {  the next source for the parent effect }
  927.     END;
  928.  
  929.     EffectsFrameParamsPtr = ^EffectsFrameParams;
  930.     EffectsFrameParams = RECORD
  931.         frameTime:                ICMFrameTimeRecord;                        {  timing data }
  932.         effectDuration:            LONGINT;                                {  the duration of a single effect frame }
  933.         doAsync:                BOOLEAN;                                {  set to true if the effect can go async }
  934.         pad:                    PACKED ARRAY [0..2] OF UInt8;
  935.         source:                    EffectSourcePtr;                        {  ptr to the source input tree }
  936.         refCon:                    Ptr;                                    {  storage for the effect }
  937.     END;
  938.  
  939.  
  940.  
  941. FUNCTION ImageCodecEffectSetup(effect: ComponentInstance; VAR p: CodecDecompressParams): ComponentResult;
  942.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  943.     INLINE $2F3C, $0004, $0300, $7000, $A82A;
  944.     {$ENDC}
  945. FUNCTION ImageCodecEffectBegin(effect: ComponentInstance; VAR p: CodecDecompressParams; ePtr: EffectsFrameParamsPtr): ComponentResult;
  946.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  947.     INLINE $2F3C, $0008, $0301, $7000, $A82A;
  948.     {$ENDC}
  949. FUNCTION ImageCodecEffectRenderFrame(effect: ComponentInstance; p: EffectsFrameParamsPtr): ComponentResult;
  950.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  951.     INLINE $2F3C, $0004, $0302, $7000, $A82A;
  952.     {$ENDC}
  953. FUNCTION ImageCodecEffectConvertEffectSourceToFormat(effect: ComponentInstance; sourceToConvert: EffectSourcePtr; requestedDesc: ImageDescriptionHandle): ComponentResult;
  954.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  955.     INLINE $2F3C, $0008, $0303, $7000, $A82A;
  956.     {$ENDC}
  957. FUNCTION ImageCodecEffectCancel(effect: ComponentInstance; p: EffectsFrameParamsPtr): ComponentResult;
  958.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  959.     INLINE $2F3C, $0004, $0304, $7000, $A82A;
  960.     {$ENDC}
  961. FUNCTION ImageCodecEffectGetSpeed(effect: ComponentInstance; parameters: QTAtomContainer; VAR pFPS: Fixed): ComponentResult;
  962.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  963.     INLINE $2F3C, $0008, $0305, $7000, $A82A;
  964.     {$ENDC}
  965.  
  966.  
  967.  
  968. { curve atom types and data structures }
  969.  
  970. CONST
  971.     kCurvePathAtom                = 'path';
  972.     kCurveEndAtom                = 'zero';
  973.     kCurveAntialiasControlAtom    = 'anti';
  974.     kCurveAntialiasOff            = 0;
  975.     kCurveAntialiasOn            = $FFFFFFFF;
  976.     kCurveFillTypeAtom            = 'fill';
  977.     kCurvePenThicknessAtom        = 'pent';
  978.     kCurveMiterLimitAtom        = 'mitr';
  979.     kCurveJoinAttributesAtom    = 'join';
  980.     kCurveMinimumDepthAtom        = 'mind';
  981.     kCurveDepthAlwaysOffscreenMask = $80000000;
  982.     kCurveTransferModeAtom        = 'xfer';
  983.     kCurveGradientAngleAtom        = 'angl';
  984.     kCurveGradientRadiusAtom    = 'radi';
  985.     kCurveGradientOffsetAtom    = 'cent';
  986.  
  987.     kCurveARGBColorAtom            = 'argb';
  988.  
  989.  
  990. TYPE
  991.     ARGBColorPtr = ^ARGBColor;
  992.     ARGBColor = RECORD
  993.         alpha:                    UInt16;
  994.         red:                    UInt16;
  995.         green:                    UInt16;
  996.         blue:                    UInt16;
  997.     END;
  998.  
  999.  
  1000. CONST
  1001.     kCurveGradientRecordAtom    = 'grad';
  1002.  
  1003.  
  1004. TYPE
  1005.     GradientColorRecordPtr = ^GradientColorRecord;
  1006.     GradientColorRecord = RECORD
  1007.         thisColor:                ARGBColor;
  1008.         endingPercentage:        Fixed;
  1009.     END;
  1010.  
  1011.     GradientColorPtr                    = ^GradientColorRecord;
  1012.  
  1013. CONST
  1014.     kCurveGradientTypeAtom        = 'grdt';
  1015.  
  1016. { currently supported gradient types }
  1017.     kLinearGradient                = 0;
  1018.     kCircularGradient            = 1;
  1019.  
  1020.  
  1021. TYPE
  1022.     GradientType                        = LONGINT;
  1023. FUNCTION CurveGetLength(effect: ComponentInstance; VAR target: gxPaths; index: LONGINT; VAR wideLength: wide): ComponentResult;
  1024.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1025.     INLINE $2F3C, $000C, $0100, $7000, $A82A;
  1026.     {$ENDC}
  1027. FUNCTION CurveLengthToPoint(effect: ComponentInstance; VAR target: gxPaths; index: LONGINT; length: Fixed; VAR location: FixedPoint; VAR tangent: FixedPoint): ComponentResult;
  1028.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1029.     INLINE $2F3C, $0014, $0101, $7000, $A82A;
  1030.     {$ENDC}
  1031. FUNCTION CurveNewPath(effect: ComponentInstance; VAR pPath: Handle): ComponentResult;
  1032.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1033.     INLINE $2F3C, $0004, $0102, $7000, $A82A;
  1034.     {$ENDC}
  1035. FUNCTION CurveCountPointsInPath(effect: ComponentInstance; VAR aPath: gxPaths; contourIndex: UInt32; VAR pCount: UInt32): ComponentResult;
  1036.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1037.     INLINE $2F3C, $000C, $0103, $7000, $A82A;
  1038.     {$ENDC}
  1039. FUNCTION CurveGetPathPoint(effect: ComponentInstance; VAR aPath: gxPaths; contourIndex: UInt32; pointIndex: UInt32; VAR thePoint: gxPoint; VAR ptIsOnPath: BOOLEAN): ComponentResult;
  1040.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1041.     INLINE $2F3C, $0014, $0104, $7000, $A82A;
  1042.     {$ENDC}
  1043. FUNCTION CurveInsertPointIntoPath(effect: ComponentInstance; VAR aPoint: gxPoint; thePath: Handle; contourIndex: UInt32; pointIndex: UInt32; ptIsOnPath: BOOLEAN): ComponentResult;
  1044.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1045.     INLINE $2F3C, $0012, $0105, $7000, $A82A;
  1046.     {$ENDC}
  1047. FUNCTION CurveSetPathPoint(effect: ComponentInstance; VAR aPath: gxPaths; contourIndex: UInt32; pointIndex: UInt32; VAR thePoint: gxPoint; ptIsOnPath: BOOLEAN): ComponentResult;
  1048.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1049.     INLINE $2F3C, $0012, $0106, $7000, $A82A;
  1050.     {$ENDC}
  1051. FUNCTION CurveGetNearestPathPoint(effect: ComponentInstance; VAR aPath: gxPaths; VAR thePoint: FixedPoint; VAR contourIndex: UInt32; VAR pointIndex: UInt32; VAR theDelta: Fixed): ComponentResult;
  1052.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1053.     INLINE $2F3C, $0014, $0107, $7000, $A82A;
  1054.     {$ENDC}
  1055. FUNCTION CurvePathPointToLength(ci: ComponentInstance; VAR aPath: gxPaths; startDist: Fixed; endDist: Fixed; VAR thePoint: FixedPoint; VAR pLength: Fixed): ComponentResult;
  1056.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1057.     INLINE $2F3C, $0014, $0108, $7000, $A82A;
  1058.     {$ENDC}
  1059. FUNCTION CurveCreateVectorStream(effect: ComponentInstance; VAR pStream: Handle): ComponentResult;
  1060.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1061.     INLINE $2F3C, $0004, $0109, $7000, $A82A;
  1062.     {$ENDC}
  1063. FUNCTION CurveAddAtomToVectorStream(effect: ComponentInstance; atomType: OSType; atomSize: Size; pAtomData: UNIV Ptr; vectorStream: Handle): ComponentResult;
  1064.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1065.     INLINE $2F3C, $0010, $010A, $7000, $A82A;
  1066.     {$ENDC}
  1067. FUNCTION CurveAddPathAtomToVectorStream(effect: ComponentInstance; pathData: Handle; vectorStream: Handle): ComponentResult;
  1068.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1069.     INLINE $2F3C, $0008, $010B, $7000, $A82A;
  1070.     {$ENDC}
  1071. FUNCTION CurveAddZeroAtomToVectorStream(effect: ComponentInstance; vectorStream: Handle): ComponentResult;
  1072.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1073.     INLINE $2F3C, $0004, $010C, $7000, $A82A;
  1074.     {$ENDC}
  1075. FUNCTION CurveGetAtomDataFromVectorStream(effect: ComponentInstance; vectorStream: Handle; atomType: LONGINT; VAR dataSize: LONGINT; VAR dataPtr: Ptr): ComponentResult;
  1076.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  1077.     INLINE $2F3C, $0010, $010D, $7000, $A82A;
  1078.     {$ENDC}
  1079.  
  1080. { UPP call backs }
  1081. {$ALIGN RESET}
  1082. {$POP}
  1083.  
  1084. {$SETC UsingIncludes := ImageCodecIncludes}
  1085.  
  1086. {$ENDC} {__IMAGECODEC__}
  1087.  
  1088. {$IFC NOT UsingIncludes}
  1089.  END.
  1090. {$ENDC}
  1091.